WebKitWebViewController
WebKitWebViewController
类是一个基于 WebKit API 的 PlatformWebViewController
实现。该类通过封装 WebKit 的功能,提供了丰富的接口来控制和操作 WebView,使得开发者可以方便地在 Flutter 应用中使用 WebView。
构造函数
WebKitWebViewController(PlatformWebViewControllerCreationParams params)
:构造函数,初始化 WebView 并设置观察者和委托。
WebKitWebViewController(PlatformWebViewControllerCreationParams params)
// 如果传入 params 是 PlatformWebViewControllerCreationParams,则转为 WebKitWebViewControllerCreationParams
: super.implementation(params is WebKitWebViewControllerCreationParams
? params
: WebKitWebViewControllerCreationParams
.fromPlatformWebViewControllerCreationParams(params)) {
// 加载进度监听
_webView.addObserver(_webView, keyPath: 'estimatedProgress', /* */);
// URL监听
_webView.addObserver(_webView, keyPath: 'URL', /* */);
final WeakReference<WebKitWebViewController> weakThis =
WeakReference<WebKitWebViewController>(this);
// 创建 createUIDelegate
_uiDelegate = _webKitParams.webKitProxy.createUIDelegate(
instanceManager: _webKitParams._instanceManager,
onCreateWebView: /* */,
requestMediaCapturePermission: /* */,,
runJavaScriptAlertDialog: /* */,,
runJavaScriptConfirmDialog: /* */,,
runJavaScriptTextInputDialog:/* */,
);
_webView.setUIDelegate(_uiDelegate);
}
加载内容
loadFile(String absoluteFilePath)
:加载本地文件。loadFlutterAsset(String key)
:加载 Flutter 资源。loadHtmlString(String html, {String? baseUrl})
:加载 HTML 字符串。loadRequest(LoadRequestParams params)
:加载网络请求。
JavaScript 通道
addJavaScriptChannel(JavaScriptChannelParams javaScriptChannelParams)
:添加 JavaScript 通道。removeJavaScriptChannel(String javaScriptChannelName)
:移除 JavaScript 通道。
导航控制
currentUrl()
:获取当前 URL。canGoBack()
:检查是否可以后退。canGoForward()
:检查是否可以前进。goBack()
:后退。goForward()
:前进。reload()
:重新加载。
缓存和存储
clearCache()
:清除缓存。clearLocalStorage()
:清除本地存储。
JavaScript 执行
runJavaScript(String javaScript)
:运行 JavaScript 代码。runJavaScriptReturningResult(String javaScript)
:运行 JavaScript 代码并返回结果。
页面信息
getTitle()
:获取页面标题。
滚动控制
scrollTo(int x, int y)
:滚动到指定位置。scrollBy(int x, int y)
:滚动指定距离。getScrollPosition()
:获取滚动位置。
其他设置
setAllowsBackForwardNavigationGestures(bool enabled)
:设置是否允许手势导航。setBackgroundColor(Color color)
:设置背景颜色。setJavaScriptMode(JavaScriptMode javaScriptMode)
:设置 JavaScript 模式。setUserAgent(String? userAgent)
:设置用户代理。enableZoom(bool enabled)
:启用或禁用缩放。setPlatformNavigationDelegate(WebKitNavigationDelegate handler)
:设置导航委托。setOnConsoleMessage(void Function(JavaScriptConsoleMessage consoleMessage) onConsoleMessage)
:设置控制台消息回调。setOnPlatformPermissionRequest(void Function(PlatformWebViewPermissionRequest request) onPermissionRequest)
:设置权限请求回调。setOnScrollPositionChange(void Function(ScrollPositionChange scrollPositionChange)? onScrollPositionChange)
:设置滚动位置变化回调。setInspectable(bool inspectable)
:设置是否可检查。getUserAgent()
:获取用户代理。setOnJavaScriptAlertDialog(Future<void> Function(JavaScriptAlertDialogRequest request) onJavaScriptAlertDialog)
:设置 JavaScript 警告对话框回调。setOnJavaScriptConfirmDialog(Future<bool> Function(JavaScriptConfirmDialogRequest request) onJavaScriptConfirmDialog)
:设置 JavaScript 确认对话框回调。setOnJavaScriptTextInputDialog(Future<String> Function(JavaScriptTextInputDialogRequest request) onJavaScriptTextInputDialog)
:设置 JavaScript 文本输入对话框回调。
本文作者:Maeiee
版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!
喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!